package bg.btanev.eightyfour.gwtfacade.commandhandler;

import java.io.Serializable;

import bg.btanev.eightyfour.shared.command.CommandAction;
import bg.btanev.eightyfour.shared.command.CommandInput;
import bg.btanev.eightyfour.shared.command.CommandResult;

public interface CommandHandler<I extends CommandInput, R extends Serializable, CR extends CommandResult<I, R>, CA extends CommandAction<I, CR>> {
	I attach(I input);

	CR execute(CA commandAction);

	R detach(R result);
}